﻿<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8" />
    <title>Ping: UdpEchoServer Class Reference</title>
    <link href="/Content/Help.css" rel="stylesheet" type="text/css" />
    <link href="/Content/css/tabs.css" rel="stylesheet" type="text/css" />
    <link href="/Content/css/doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div id="header">
        <img id="logo" alt="StateForge" src="/Content/Images/StateForgeLogo.png" />
        <div id="title">
            <h1>
                Examples using state machines generated by StateBuilderCpp
            </h1>
            <h3>
                Ping: UdpEchoServer Class Reference
            </h3>
        </div>
        <div id="menucontainer">
            <ul id="menu">
                <li><a href="/">Home</a></li>
                <li><a href="/Home/Download">Downloads</a></li>
                <li><a href="/Help/state-machine-tools.aspx">Help</a></li>
                <li><a href="/Home/Faq">F.A.Q</a></li>
                <li><a href="/Home/About">Contact us</a></li>
            </ul>
        </div>
    </div>
<!-- Generated by Doxygen 1.7.4 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-slots">Public Slots</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-slots">Private Slots</a> &#124;
<a href="#pri-attribs">Private Attributes</a>  </div>
  <div class="headertitle">
<div class="title">UdpEchoServer Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="UdpEchoServer" -->
<p><code>#include &lt;<a class="el" href="_udp_echo_server_8h_source.html">UdpEchoServer.h</a>&gt;</code></p>

<p><a href="class_udp_echo_server-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-slots"></a>
Public Slots</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#ae60339fd50dd10f2e54724173d78e2b4">start</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#ad47e0b606e7ea46d94ddec2ad77bc176">UdpEchoServer</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#a9b1c3f79fa6f9824029e2693cf4acb83">~UdpEchoServer</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pri-slots"></a>
Private Slots</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#adb97f51d36fd7251a4c500eb4b265a4f">processPendingDatagrams</a> ()</td></tr>
<tr><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">QUdpSocket *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_udp_echo_server.html#ac5071dfb7205005603ce05b31c338f03">m_port</a></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="_udp_echo_server_8h_source.html#l00008">8</a> of file <a class="el" href="_udp_echo_server_8h_source.html">UdpEchoServer.h</a>.</p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ad47e0b606e7ea46d94ddec2ad77bc176"></a><!-- doxytag: member="UdpEchoServer::UdpEchoServer" ref="ad47e0b606e7ea46d94ddec2ad77bc176" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UdpEchoServer::UdpEchoServer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8cpp_source.html#l00008">8</a> of file <a class="el" href="_udp_echo_server_8cpp_source.html">UdpEchoServer.cpp</a>.</p>
<div class="fragment"><pre class="fragment">                             :
<a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>(<span class="keyword">new</span> QUdpSocket(<span class="keyword">this</span>)),
<a class="code" href="class_udp_echo_server.html#ac5071dfb7205005603ce05b31c338f03">m_port</a>(2011)
{
    
    connect(<a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>, SIGNAL(readyRead()), <span class="keyword">this</span>, SLOT(<a class="code" href="class_udp_echo_server.html#adb97f51d36fd7251a4c500eb4b265a4f">processPendingDatagrams</a>()));
}
</pre></div>
</div>
</div>
<a class="anchor" id="a9b1c3f79fa6f9824029e2693cf4acb83"></a><!-- doxytag: member="UdpEchoServer::~UdpEchoServer" ref="a9b1c3f79fa6f9824029e2693cf4acb83" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">UdpEchoServer::~UdpEchoServer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8cpp_source.html#l00016">16</a> of file <a class="el" href="_udp_echo_server_8cpp_source.html">UdpEchoServer.cpp</a>.</p>
<div class="fragment"><pre class="fragment">{
}
</pre></div>
</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="adb97f51d36fd7251a4c500eb4b265a4f"></a><!-- doxytag: member="UdpEchoServer::processPendingDatagrams" ref="adb97f51d36fd7251a4c500eb4b265a4f" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void UdpEchoServer::processPendingDatagrams </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [private, slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8cpp_source.html#l00031">31</a> of file <a class="el" href="_udp_echo_server_8cpp_source.html">UdpEchoServer.cpp</a>.</p>
<div class="fragment"><pre class="fragment">                                           {
    <span class="keywordflow">while</span> (<a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;hasPendingDatagrams()){
        QByteArray datagram;
        QHostAddress address;
        quint16 port;
        datagram.resize(<a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;pendingDatagramSize());
        <a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;readDatagram(datagram.data(), datagram.size(), &amp;address, &amp;port);
        quint64 written = <a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;writeDatagram(datagram.data(), datagram.size(), address, port);
        QLOG_DEBUG() &lt;&lt; <span class="stringliteral">&quot;written &quot;</span> &lt;&lt; written &lt;&lt; <span class="stringliteral">&quot; bytes to &quot;</span> &lt;&lt; address.toString() &lt;&lt; <span class="stringliteral">&quot;:&quot;</span> &lt;&lt; port;
    }
}
</pre></div>
</div>
</div>
<a class="anchor" id="ae60339fd50dd10f2e54724173d78e2b4"></a><!-- doxytag: member="UdpEchoServer::start" ref="ae60339fd50dd10f2e54724173d78e2b4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool UdpEchoServer::start </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [slot]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8cpp_source.html#l00020">20</a> of file <a class="el" href="_udp_echo_server_8cpp_source.html">UdpEchoServer.cpp</a>.</p>
<div class="fragment"><pre class="fragment">{
    QLOG_INFO();
    <span class="keywordflow">if</span>(<a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;bind(<a class="code" href="class_udp_echo_server.html#ac5071dfb7205005603ce05b31c338f03">m_port</a>, QUdpSocket::ShareAddress) == <span class="keyword">false</span>){
        QLOG_ERROR() &lt;&lt; <span class="stringliteral">&quot;Cannot listen on port &quot;</span> &lt;&lt; <a class="code" href="class_udp_echo_server.html#ac5071dfb7205005603ce05b31c338f03">m_port</a> &lt;&lt; <span class="stringliteral">&quot;, error &quot;</span> &lt;&lt; <a class="code" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">m_pUdpSocket</a>-&gt;errorString();
        <span class="keywordflow">return</span> <span class="keyword">false</span>;
    } <span class="keywordflow">else</span> {
        <span class="keywordflow">return</span> <span class="keyword">true</span>;
    }
}
</pre></div>
</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="ac5071dfb7205005603ce05b31c338f03"></a><!-- doxytag: member="UdpEchoServer::m_port" ref="ac5071dfb7205005603ce05b31c338f03" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="class_udp_echo_server.html#ac5071dfb7205005603ce05b31c338f03">UdpEchoServer::m_port</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8h_source.html#l00024">24</a> of file <a class="el" href="_udp_echo_server_8h_source.html">UdpEchoServer.h</a>.</p>

</div>
</div>
<a class="anchor" id="a301fa89ec73213f98364c120a777df53"></a><!-- doxytag: member="UdpEchoServer::m_pUdpSocket" ref="a301fa89ec73213f98364c120a777df53" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QUdpSocket* <a class="el" href="class_udp_echo_server.html#a301fa89ec73213f98364c120a777df53">UdpEchoServer::m_pUdpSocket</a><code> [private]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Definition at line <a class="el" href="_udp_echo_server_8h_source.html#l00023">23</a> of file <a class="el" href="_udp_echo_server_8h_source.html">UdpEchoServer.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_udp_echo_server_8h_source.html">UdpEchoServer.h</a></li>
<li><a class="el" href="_udp_echo_server_8cpp_source.html">UdpEchoServer.cpp</a></li>
</ul>
</div>
﻿<div id="footer">
    <hr />
    <p>
        Copyright &copy; 2011 StateForge.</p>
    <hr />
</div>
</body> </html> 
